//导入的express
const express  = require('express')
//创建服务器 实例对象
const app = express()
const bodyParser = require('body-parser')
//引用静态资源图片
app.use(express.static('../graduation_server'))
//配置解析表单数据的中间件 - 解析post请求 从前端传来的数据
app.use(bodyParser.json())//数据json类型 没有这个解析code encryptedData等前端数据是空白的 
app.use(bodyParser.urlencoded({extended:false}))//解析post请求数据

//一定要在路由之前 封装res.cc函数
app.use((req,res,next)=>{
    //status 默认值为1 表示失败的情况
    //err 的值 可能是一个错误对象 也可能是一个错误的描述字符串
    res.cc = function(err,status=1){
        res.send({
            status,
            message:err instanceof Error ? err.message : err
        })
    }
    next()
})




//导入并使用路由模块 - 首页轮播图
const  swiperRouter = require('./router/swiper.js')
app.use('/apiswiper',swiperRouter)
//导入并使用路由模块 - 分类导航
const navListRouter = require('./router/navlist')
app.use('/api',navListRouter)
//导入并使用路由模块 - 楼层数据
const FloorRouter = require('./router/floorlist')
app.use('/floor',FloorRouter)
//导入并使用路由模块 - 分类数据
const cateListRouter = require('./router/catelist')
app.use('/apicatelist',cateListRouter)
//导入并使用路由模块 - 搜索项数据
const searchListRouter = require('./router/searchlist')
app.use('/apisearchlist',searchListRouter)
//导入并使用路由模块 - 商品列表
const goodslistRouter = require('./router/goodslist')
app.use('/apigoodslist',goodslistRouter)
//导入并使用路由模块 - 商品详情
const detailRouter = require('./router/goodsdetail')
app.use('/apigoods',detailRouter)
//导入并使用路由模块 - 微信登录换取token
const tokenRouter = require('./router/token')
app.use('/users',tokenRouter)
//导入并使用路由模块 - 微信创建订单
const createRouter = require('./router/createorders')
app.use('/apiorders',createRouter)
//导入并使用路由模块 - 微信订单支付
const payRouter = require('./router/payorders')
app.use('/apiorders',payRouter)
//导入并使用路由模块 - 订单支付状态查询
const chkRouter = require('./router/chko')
app.use('/apiorders',chkRouter)
//导入并使用路由模块 - 数据库的商品数量
const CountRouter = require('./router/goodsCount')
app.use('/apiCount',CountRouter)


//定义错误级别的中间件
/* app.use((err,req,res,next)=>{
    //验证失败导致的错误
     if(err instanceof joi.ValidationError) {
        return res.cc(err)
    } 
    //身份认证失败的配置
    if(err.name === 'UnauthorizedError') return res.cc('身份认证失败')
    res.cc(err)//未知的错误
}) */
//启动服务器
app.listen(8080,()=>{
    console.log('running success');
})